package chapter08_class

/**
 * Created with IntelliJ IDEA.
 * ClassName: Test07_Abstract
 * Package: chapter08_class
 * Description:
 * User: fzykd
 *
 * @Author: LQH
 *          Date: 2023-07-03
 *          Time: 11:03
 */

//抽象类
object Test07_Abstract {
  def main(args: Array[String]): Unit = {

  }

}

abstract class Person7 {
  //定义父类 抽象类
  val name: String = "person"

  var sex:String = "ppp"

  //属性 定义了没有赋值 就是抽象属性
  val age: Int

  def eat(): Unit = {
    println("person eat")
  }

  //抽象方法 申明了没有实现就是抽象方法
  def sleep(): Unit

}

//定义子类 如果父类是抽象类 那么子类就必须将抽象的属性和方法实现
//否则子类也声明成抽象类
class Stu7 extends Person7 {

  //重写非抽象方法使用 override
  //子类对非抽象属性重写 父类非抽象属性只支持val类型 var申明的是可变类型 重写不在有意义
  override val name: String = "子类 重写"

  sex = "ddd"

  //重写抽象方法不加override
  //前面的修饰类型和父类的保持一致就行
  val age = 10

  def sleep(): Unit = {
    println("子类 睡觉")
  }

  override def eat: Unit = {
    //子类中 super 调用父类的方法
    super.eat()
    println("student eat")
  }


}
